<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>
    console.log(fn);

    fn();
    function fn(){
        console.log("hello")
    }
    fn();

    // ========


    console.log(abc)
    var abc = function(){}
    console.log(abc)


    // ========
    var qwe;
    function qwe (){}

    console.log(qwe);

    
    qwe = "hello";

    console.log(qwe);

    // ==========
    console.log("==========")

    ;(function(){
        console.log(a);     // f3
        var a = "hello";
        console.log(a);     // hello
        function a(){ 1 }
        console.log(a);     // hello
        a = function(){ 2 }
        console.log(a);     // f2
        var a = "world"
        console.log(a);     // world
        function a(){ 3 }
        console.log(a);     // world
    })();
    // ↑↑↑等价于↓↓↓
    // ;(function(){
    //     var a;
    //     var a;
    //     function a(){ 1 }
    //     function a(){ 3 }
    //     console.log(a);
    //     a = "hello";
    //     console.log(a);
    //     console.log(a);
    //     a = function(){ 2 }
    //     console.log(a);
    //     a = "world";
    //     console.log(a);
    //     console.log(a);
    // })();


    console.log("=====")


    ;(function(){
        console.log(b);     // f4
        function b(){ 1 }
        console.log(b);     // f4
        function b(){ 2 }
        console.log(b);     // f4
        var b = "hello"
        console.log(b);     // hello
        function b(){ 3 }
        console.log(b);     // hello
        function b(){ 4 }
        console.log(b);     // hello
        var b = function(){ 5 }
        console.log(b);     // f5
    })();
    // ↑↑↑等价于↓↓↓
    // ;(function(){
    //     var b;
    //     var b
    //     function b(){ 1 }
    //     function b(){ 2 }
    //     function b(){ 3 }
    //     function b(){ 4 }
    //     console.log(b);     // f4
    //     console.log(b);     // f4
    //     console.log(b);     // f4
    //     b = "hello"
    //     console.log(b);     // hello
    //     console.log(b);     // hello
    //     console.log(b);     // hello
    //     b = function(){ 5 }
    //     console.log(b);     // f5
    // })();





</script>
</html>